package com.relytosoft.mizar.media.display.services.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.relytosoft.mizar.media.display.api.entity.ViewDetail;
import com.relytosoft.mizar.media.display.api.entity.ViewForm;
import com.relytosoft.mizar.media.display.api.pojo.dto.ViewDetailDto;
import com.relytosoft.mizar.media.display.api.pojo.dto.ViewFormDto;
import com.relytosoft.mizar.media.display.api.pojo.vo.VideoPlayVo;

import java.util.List;

/**
 * 视图资源业务接口
 *
 * @author hj
 * @version 1.0
 * @date 2022/4/22 16:25
 * @ClassName ViewFormService
 */
public interface ViewFormService extends IService<ViewForm> {

    /**
     * 获取视图资源树
     * @author jgg
     * @date 2022/4/22 16:28
     * @return java.util.List<cn.hutool.core.lang.tree.Tree>
     * @param showGroup 是否只展示视图组
     */
    List<Tree<Integer>> selectTree(Boolean showGroup);

    /**
     * 新建视图资源
     * @author jgg
     * @date 2022/4/22 17:40
     * @param form
     * @param detailList
     * @return boolean
     */
    boolean insertViewForm(ViewForm form , List<ViewDetailDto> detailList);

    /**
     * 更新操作
     * @author jgg
     * @date 2022/4/24 10:28
     * @param form
     * @param detailList
     * @return boolean
     */
    boolean updateViewForm(ViewForm form ,List<ViewDetail> detailList);

    /**
     * 删除视图资源
     * @author jgg
     * @date 2022/4/24 10:53
     * @param id
     * @return boolean
     */
    boolean deleteById(List<Integer> id);

    /**
     * 通过视图ID查询视频播放码流地址
     * @author jgg
     * @date 2022/4/24 11:21
     * @param id
     * @return java.util.List<com.relytosoft.mizar.media.display.api.pojo.vo.VideoPlayVo>
     */
    List<VideoPlayVo> selectVideoPlay(Integer id);

    /**
     * 通过视图名称查询
     * @author jgg
     * @date 2022/4/24 11:46
     * @param name
     * @return List<ViewFormDto>
     */
    List<ViewFormDto> selectListByName(String name);

    /**
     * 获取祖级id
     * @param form
     * @return
     */
    String checkAncestor(ViewFormDto form);

    /**
     * 验证名字
     * @author jgg
     * @param form
     *
     */
    void checkName(ViewFormDto form);

    /**
     * 检查名称并返回祖级
     * @author jgg
     * @param dto
     * @return String
     */
    String check(ViewFormDto dto);

    /**
     * 查询删除ids
     * @author jgg
     * @param id
     * @return List<Integer>
     */
    List<Integer> selectDeleteIds(Integer id);

}
